---
title: Generate and save claim tasks
summary: Create a claim task generator bound to the current claim or a batch, and persist any pending tasks.
status: draft
owner: SAIF Documentation Generator
last_reviewed: 2026-08-21
library: SAIF.Application.Claim
reference_type: embedded
operation_id: OP-CLM-6
trigger: A derived manager needs to raise claim tasks during a save.
---

# Generate and save claim tasks

This operation gives every derived claim manager a consistent way to raise and persist follow-up tasks, either for the claim currently in context or across multiple claims.

| Field | Value |
| --- | --- |
| **Operation ID** | OP-CLM-6 |
| **Trigger** | A derived manager needing to raise claim tasks during a save |
| **Inputs** | `inMultiClaim` flag (default `False`) |
| **Outputs** | Success flag (`Boolean`) from `SaveTasks()` |
| **Primary components** | `ClaimAppManager.NewTaskGenerator`, `ClaimAppManager.SaveTasks` |
| **Entry point** | `SAIF.Application.Claim/ClaimAppManager.vb` |

## Steps

1. `NewTaskGenerator(inMultiClaim)`: when `inMultiClaim` is `True`, construct `New clsClaimTaskGenerator(DPI)` for a multi-claim batch; otherwise construct `New clsClaimTaskGenerator(DPI, ClaimData)` bound to the claim in context ([BR-CLM-017](../business-rules.md#br-clm-017-task-generator-claim-binding)).
2. `SaveTasks()` returns `True` immediately when `Tasks.Count = 0` ([BR-CLM-018](../business-rules.md#br-clm-018-empty-task-set-always-saves-successfully)); otherwise calls `Tasks.Save()` and returns `Tasks.ErrorCount = 0`.
   - Delegated logic: `clsClaimTaskGenerator` (`SAIF.Business.Tasks.Claim`) builds `clsClaimTask` instances and saves them through `clsClaimTaskCollection`; underlying task persistence uses the Oracle package `pk82036_task` (`task_insert` / `task_update` / `task_delete`).*
   > **Origin**: Task persistence is implemented in `SAIF.Business.Tasks.Claim` (`clsClaimTaskGenerator`) and executed on behalf of this operation. The save participates in the transaction opened by [Transaction-bracketed save](transaction-bracketed-save.md) when called from within `OnWrite()`.

## Process flow

The following diagram visualizes this operation's control flow.

```mermaid
flowchart TD
	Start([NewTaskGenerator called]) --> Multi{inMultiClaim?}
	Multi -->|Yes| BatchGen["New clsClaimTaskGenerator<br>DPI"]
	Multi -->|No| SingleGen["New clsClaimTaskGenerator<br>DPI, ClaimData"]
	BatchGen --> SaveCall[SaveTasks called]
	SingleGen --> SaveCall
	SaveCall --> Count{Tasks.Count = 0?}
	Count -->|Yes| ReturnTrue([Return True])
	Count -->|No| DoSave[Tasks.Save]
	DoSave --> ErrCheck{Tasks.ErrorCount = 0?}
	ErrCheck -->|Yes| ReturnTrue
	ErrCheck -->|No| ReturnFalse([Return False])
```

## Failure and edge-case behavior

- An empty task set never fails a save.
- A partially failed task save returns `False` to the calling `OnWrite()`, which will roll back the enclosing transaction per [Transaction-bracketed save](transaction-bracketed-save.md).

## Related documentation
- [Operations and processes](../operations-processes.md)
- [Business rules](../business-rules.md)

> **Note:** Statements marked with * were inferred from code structure, naming conventions, or
> contextual evidence where direct confirmation was not available in source artifacts. Statements
> marked with ** could not be confirmed; treat as unknown until verified.

## Sources
- `SAIF.Application.Claim/ClaimAppManager.vb`
- `SAIF.Business.Tasks.Claim/clsClaimTaskGenerator.vb`
